﻿using System.Collections.Generic;

namespace Mitosoft.Definitions.Data
{
  public interface IDataBlockProvider<out D, in V> where D : IGenericDataBlockItem<V>
  {
    /// <summary>
    /// Retrieves data records.
    /// </summary>
    /// <param name="id">ID of the record we want to start from.</param>
    /// <param name="maximumNumberOfRecords">Maximum number of records we want to retrieve.</param>
    /// <returns>Collection of <see cref="IGenericDataBlockItem{V}"/> values.</returns>
    IEnumerable<D> Values(ulong id, ulong maximumNumberOfRecords);

	/// <summary>
    /// Represents the total number of available records.
    /// </summary>
    ulong TotalNumberOfRecords { get; }
  }
}
